const koa = require('koa')
const app = new koa()
const cors = require('@koa/cors')
const { bodyParser } = require('@koa/bodyparser')

app.use(cors()) // 告诉浏览器，允许前端跨域
// app.use(cors({
//     origin: 'http://8.148.80.128:3000',
//     credentials: true
// }));
// app.use(bodyParser()) // 辅助koa解析请求体中的数据，一定要放在路由之前
const static = require('koa-static');
const path = require('path');

// 配置静态文件服务
app.use(static(path.join(__dirname, 'public')));
const userRouter = require('./router/user.js')
const noteRouter = require('./router/note.js')

app.use(bodyParser({
    jsonLimit: '50mb',    // JSON请求体限制50MB
    formLimit: '50mb',    // 表单请求体限制50MB
    textLimit: '50mb',    // 文本请求体限制50MB
    enableTypes: ['json', 'form', 'text']
}));

// 被app.use调用的函数，中里面一定拥有ctx参数
// userRouter.routes()：user.js中所有的路由的回调函数
app.use(userRouter.routes())

//当客户端发送一个服务器不支持的HTTP请求方法时（例如对只支持GET的接口发送POST请求），这个中间件会自动返回适当的HTTP状态码：
//- 405 Method Not Allowed：请求方法不被允许
//- 501 Not Implemented：请求方法未实现
// 它通常与 userRouter.routes() 配合使用，放在路由注册之后，确保所有路由都能得到正确的HTTP方法支持检查。
app.use(userRouter.allowedMethods())
app.use(noteRouter.routes())
app.use(noteRouter.allowedMethods())

app.listen(3000, () => {
    console.log('http://localhost:3000')
})